<?php

/**
 * @author Grover Campos
 * @version 1.0
 * @created 03-ago-2009 06:43:06 p.m.
 */
class Gtux_Model_Elemento extends Gtux_Model_Abstract 
{
  /**
   * @var int
   */
  private $_id_elemento;
  /**
   * @var string
   */
  private $_nombre;
  
  const ELEMENTO_BUTTON            = 1;
  const ELEMENTO_CHECKBOX          = 2;
  const ELEMENTO_COMBOBOX          = 3;
  const ELEMENTO_CURRENCYTEXTBOX   = 4;
  const ELEMENTO_DATETEXTBOX       = 5;
  const ELEMENTO_EDITOR            = 6;
  const ELEMENTO_FILTERINGSELECT   = 7;
  const ELEMENTO_HORIZONTALSLIDER  = 8;
  const ELEMENTO_NUMBERSPINER      = 9;
  const ELEMENTO_NUMBERTEXTBOX     = 10;
  const ELEMENTO_PASSWORDTEXTBOX   = 11;
  const ELEMENTO_RADIOBUTTON       = 12;
  const ELEMENTO_SIMPLETEXTAREA    = 13;
  const ELEMENTO_SLIDER            = 14;
  const ELEMENTO_SUBMITBUTTON      = 15;
  const ELEMENTO_TEXTAREA          = 16;
  const ELEMENTO_TEXTBOX           = 17;
  const ELEMENTO_TIMETEXTBOX       = 18;
  const ELEMENTO_VALIDATIONTEXTBOX = 19;
  const ELEMENTO_VERTICALSLIDER    = 20;
  /**
   * Elemento especial
   * @var int
   */
  const ELEMENTO_DATETIME          = 40;
  const ELEMENTO_FILE              = 41;

  /**
   * Devuelve el id del elemento
   *
   * @return int
   */
  public function getIdElemento()
  {
    return $this->_id_elemento;
  }

  /**
   * Establece el id del elemento
   * 
   * @param int $id_elemento
   */
  public function setIdElemento($id_elemento)
  {
    if (Zend_Validate::is($id_elemento, 'Int'))
    {
      $this->_id_elemento = $id_elemento;
    }
  }

  /**
   * Devuelve el nombre
   *
   * @return string
   */
  public function getNombre()
  {
    return $this->_nombre;
  }

  /**
   * Establece el nombre
   * 
   * @param nombre
   */
  public function setNombre($nombre)
  {
    $this->_nombre = trim($nombre);
  }

  /**
   * @see Gtux_Model_Abstract::getGateway()
   *
   * @return Gtux_Model_Gateway_Abstract
   */
  public function getGateway()
  {
    if (null == $this->_gateway) 
    {
      $this->setGateway(new Gtux_Model_Gateway_Elemento());
    }
    return $this->_gateway;
  }


  public function __sleep() 
  {
    return array(
      '_id_elemento', '_nombre'
    );
  }
  
  /**
   * Inserta el modelo a la bd
   * @return int
   */
  public function insert() 
  {
    return $this->getGateway()->insert($this);
  }
  
  /**
   * Actualiza el objeto en la bd
   * @return int
   */
  public function update() 
  {
    return $this->getGateway()->update($this);
  }
}
?>